﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using AutoBackupDatabase.BLL;
using AutoBackupDatabase.General;
using AutoBackupDatabase.ENT;

namespace AutoBackupDatabase
{
    using AutoBackupDatabase.Form;

    public partial class Item_ucc : DevExpress.XtraEditors.XtraUserControl
    {
        private ITEMBLL itemTypeBLL;
        List<ITEMENT> listItemType;
        ITEMTYPEBLL typeBLL;
        
        
        public Item_ucc()
        {
            InitializeComponent();
            itemTypeBLL = new ITEMBLL();
            listItemType = new List<ITEMENT>();
            typeBLL = new ITEMTYPEBLL();
        }



        private void btnAdd_Click(object sender, EventArgs e)
        {


            if (!checkRole.CHECKROLE(general.groupUserCode, Role.item_add))
            {
                MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                return;
            }

            if (btnAdd.Text == "THÊM MỚI")
            {
                general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                txtItemName.Text = "";
                txtPrice.Text = "";
                txtShortcut.Text = "";
                chkIsDrink.CheckState = CheckState.Checked;

                txtItemID.Enabled = true;
                txtItemName.Enabled = true;
                txtPrice.Enabled = true;
                txtShortcut.Enabled = true;
                glkItemType.Enabled = true;
                chkIsDrink.Enabled = true;
                return;
            }
            else if (btnAdd.Text == "LƯU")
            {

                if (!Validator.IsNull(txtItemName.Text))
                {
                    MessageBox.Show("Tên món ăn không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                    return;
                }
                
                if (listItemType.Exists(p => p.ITEMNAME.Equals(txtItemName.Text.TrimStart().TrimEnd())))
                {
                    MessageBox.Show("Tên món ăn này [" + txtItemName.Text + "] đã tồn tại vui lòng nhập tên khác", "Thông báo");
                    return;
                }

                try
                {
                    float.Parse(txtPrice.Text);
                    if (float.Parse(txtPrice.Text)<=0)
                    {
                        MessageBox.Show("Đơn giá phải là chữ số và lớn hơn 0", "Thông báo");

                        return;
                    }

                }
                catch (Exception)
                {
                    MessageBox.Show("Đơn giá phải là chữ số và lớn hơn 0", "Thông báo");

                    return;
                }

                if (glkItemType.EditValue==null||glkItemType.EditValue.ToString()=="")
                {
                    MessageBox.Show("Chọn loại món ", "Thông báo");
                    return;
                }

                ITEMENT ent = new ITEMENT();

                if (chkIsDrink.CheckState == CheckState.Checked)
                {
                    ent.ISDRINK = 1;
                }
                else
                    ent.ISDRINK = 0;

                ent.ITEMNAME = txtItemName.Text;
                ent.ITEMTYPEID = int.Parse(glkItemType.EditValue.ToString());
                ent.PRICE = float.Parse(txtPrice.Text);
                ent.SHORTCUT = txtShortcut.Text;
                if (itemTypeBLL.INSERTITEM(ent))
                {
                    txtItemName.Text = "";
                    txtPrice.Text = "";
                    txtShortcut.Text = "";
                    general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);

                    MessageBox.Show("Thêm mới thành công", "Thông báo");
                    txtItemID.Enabled = false;
                    txtItemName.Enabled = false;
                    txtPrice.Enabled = false;
                    txtShortcut.Enabled = false;
                    glkItemType.Enabled = false;
                    chkIsDrink.Enabled = false;
                    LoadItem();
                }
                else
                {
                    MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
                }
            }
            else
                MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
        }

        private void LoadItemType()
        {
            glkItemType.Properties.DataSource = typeBLL.GET_ITEMTYPE_ALL();
            glkItemType.Properties.DisplayMember = "ITEMTYPENAME";
            glkItemType.Properties.ValueMember = "ITEMTYPEID";

            
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                if (!checkRole.CHECKROLE(general.groupUserCode, Role.item_edit))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }
                if (btnUpdate.Text == "CẬP NHẬT")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    txtItemID.Enabled = true;
                    txtItemName.Enabled = true;
                    txtPrice.Enabled = true;
                    txtShortcut.Enabled = true;
                    glkItemType.Enabled = true;
                    chkIsDrink.Enabled = true;
                    return;

                }
                else
                    if (btnUpdate.Text == "HỦY")
                    {
                        general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                        txtItemID.Enabled = false;
                        txtItemName.Enabled = false;
                        txtPrice.Enabled = false;
                        txtShortcut.Enabled = false;
                        glkItemType.Enabled = false;
                        chkIsDrink.Enabled = false;
                    }
                    else if (btnUpdate.Text == "LƯU")
                    {

                        if (!Validator.IsNull(txtItemName.Text))
                        {
                            MessageBox.Show("Tên món ăn không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                            return;
                        }
                        if (!Validator.IsNull(txtItemID.Text))
                        {
                            MessageBox.Show("Mã món ăn không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                            return;
                        }

                       

                        try
                        {
                            float.Parse(txtPrice.Text);
                            if (float.Parse(txtPrice.Text) <= 0)
                            {
                                MessageBox.Show("Đơn giá phải là chữ số và lớn hơn 0", "Thông báo");

                                return;
                            }

                        }
                        catch (Exception)
                        {
                            MessageBox.Show("Đơn giá phải là chữ số và lớn hơn 0", "Thông báo");

                            return;
                        }

                        if (glkItemType.EditValue == null || glkItemType.EditValue.ToString() == "")
                        {
                            MessageBox.Show("Chọn loại món ", "Thông báo");
                            return;
                        }

                        ITEMENT ent = new ITEMENT();

                        if (chkIsDrink.CheckState == CheckState.Checked)
                        {
                            ent.ISDRINK = 1;
                        }
                        else
                            ent.ISDRINK = 0;

                        ent.ITEMID = int.Parse(txtItemID.Text);
                        ent.ITEMNAME = txtItemName.Text;
                        ent.ITEMTYPEID = int.Parse(glkItemType.EditValue.ToString());
                        ent.PRICE = float.Parse(txtPrice.Text);
                        ent.SHORTCUT = txtShortcut.Text;
                        if (itemTypeBLL.UPDATEITEMBYITEMID(ent))
                        {
                            MessageBox.Show("Cập nhật thành công", "Thông báo");
                            txtItemID.Enabled = false;
                            txtItemName.Enabled = false;
                            txtPrice.Enabled = false;
                            txtShortcut.Enabled = false;
                            glkItemType.Enabled = false;
                            chkIsDrink.Enabled = false;
                            LoadItem();
                            general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                        }
                    }
                    else
                        MessageBox.Show("Cập nhật thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
            }
            catch (Exception)
            {

                return;
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {

                if (!checkRole.CHECKROLE(general.groupUserCode, Role.item_delete))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }
                if (btnDelete.Text == "HỦY")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    txtItemID.Enabled = false;
                    txtItemName.Enabled = false;
                    txtPrice.Enabled = false;
                    txtShortcut.Enabled = false;
                    glkItemType.Enabled = false;
                    chkIsDrink.Enabled = false;
                }
                else if (btnDelete.Text == "XÓA" && Validator.IsNull(txtItemID.Text))
                {
                    if (MessageBox.Show(MessageShow.delConfirmInfo, MessageShow.delConfirmCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                    {
                        ITEMENT ent = new ITEMENT();
                        ent.ITEMID = int.Parse(txtItemID.Text);
                        itemTypeBLL.DELTELEITEMBYITEMID(ent);
                        LoadItem();
                        general.ChangeButtonStatus("delete", btnAdd, btnUpdate, btnDelete);
                    }
                }
                else
                    return;
            }
            catch (Exception)
            {

                return;
            }
        }

        private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            try
            {
                if (e.RowHandle >= 0)
                {
                    ITEMENT depart = (ITEMENT)gridView1.GetFocusedRow();
                    txtItemID.Text = depart.ITEMID.ToString();
                    txtItemName.Text = depart.ITEMNAME;
                    txtPrice.Text = depart.PRICE.ToString();
                    txtShortcut.Text = depart.SHORTCUT;
                    if (depart.ISDRINK==1)
                    {
                        chkIsDrink.CheckState = CheckState.Checked;

                    }
                    else
                        chkIsDrink.CheckState = CheckState.Unchecked;
                    glkItemType.EditValue = depart.ITEMTYPEID;
                }
            }
            catch (Exception)
            {

                return;
            }
        }


        DETAILGROUPUSERROLEBLL checkRole = new DETAILGROUPUSERROLEBLL();
        private void Item_ucc_Load(object sender, EventArgs e)
        {
            try
            {
             

           
                LoadItemType();
                LoadItem();
            }
            catch (Exception)
            {


            }
           
        }

        private void LoadItem()
        {
            listItemType = itemTypeBLL.GET_ITEM_ALL();
            gridItem.DataSource = listItemType;
            if (gridView1.RowCount > 0)
            {
                gridView1.InvertRowSelection(0);
            }
        }

        private void gridItem_Click(object sender, EventArgs e)
        {

        }

        private void chkIsDrink_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void glkItemType_Properties_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            if (glkItemType.Properties.Buttons[1] == e.Button)
            {
                frmItemType depart = new frmItemType();
                depart.ShowDialog();
                this.LoadItemType();
            }
        }

    }
}
